package com.zhentao.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * 参数规则DTO - 用于创建和更新规则
 * @author zhentao
 * @date 2024-12-19
 */
@Data
public class ParamRuleDTO {
    
    /**
     * 规则编码，全局唯一
     */
    @NotBlank(message = "规则编码不能为空")
    private String ruleCode;
    
    /**
     * 规则名称
     */
    @NotBlank(message = "规则名称不能为空")
    private String ruleName;
    
    /**
     * 规则类型：VALIDATION-校验，CALCULATION-计算，TRANSFORM-转换，LOGIC-逻辑
     */
    @NotBlank(message = "规则类型不能为空")
    private String ruleType;
    
    /**
     * 触发条件，JSON格式
     */
    private String triggerCondition;
    
    /**
     * 规则表达式或脚本内容
     */
    @NotBlank(message = "规则内容不能为空")
    private String ruleContent;
    
    /**
     * 规则引擎类型：GROOVY-Groovy脚本，JAVASCRIPT-JS脚本，REGEX-正则表达式，CUSTOM-自定义
     */
    @NotBlank(message = "规则引擎类型不能为空")
    private String engineType;
    
    /**
     * 输入参数定义，JSON格式
     */
    private String inputParams;
    
    /**
     * 输出参数定义，JSON格式
     */
    private String outputParams;
    
    /**
     * 规则描述
     */
    private String description;
    
    /**
     * 优先级，数值越大优先级越高
     */
    @NotNull(message = "优先级不能为空")
    private Integer priority = 0;
    
    /**
     * 状态：1-启用，0-禁用
     */
    @NotNull(message = "状态不能为空")
    private Integer status = 1;
    
    /**
     * 是否缓存结果：1-是，0-否
     */
    private Integer cacheResult = 0;
    
    /**
     * 缓存时间（秒），0表示永久缓存
     */
    private Integer cacheTime = 300;
    
    /**
     * 标签，逗号分隔
     */
    private String tags;
}

